iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

老菜雞挑戰30天學爆Unity&C#會成功嗎?...系列 第 4

【Day4】老菜雞學到物件下樓梯效果之Unity&C#取得使用者輸入去控制物件 &剛體物件、碰撞判斷 (Rigidbody、Collider)

  • 分享至 

  • xImage
  •  

前言

延續昨天程式碼操縱物件的移動,今天也會接續昨天的內容繼續深入,會探討到物件與物件之間的關係。


取得使用者輸入去控制物件

  • 昨天學到的是透過程式碼去控制物件,在按下開始鍵之後固定會做什麼行為,而大家都知道遊戲中一定是透過我們玩家端的input device去控制遊戲角色等等,所以我們需要再另寫一個判斷式去控制物件,而且Unity有內建的方法可以取得使用者的輸入。
  • Update裡寫一個if判斷: if(Input.GetKey(KeyCode.RightArrow))
    這行的意思是說,如果玩家按了鍵盤上的右鍵就讓物件做什麼行為。
    反之如果按了左鍵會對物件造成什麼影響,需要再加個else if判斷:
    else if(Input.GetKey(KeyCode.LeftArrow))
    如果要設計物件往左或往右移動的話,往左移動的部分要注意需把移動的值改成負數,所以在speed*Time.deltaTime前面要加上一個負號。
void Update()
    {
        if(Input.GetKey(KeyCode.RightArrow)) {
            transform.Translate(speed*Time.deltaTime,0,0);
        }
        else if(Input.GetKey(KeyCode.LeftArrow)) {
            transform.Translate(-speed*Time.deltaTime,0,0);
        }
    }

D鍵操縱物件: if(Input.GetKey(KeyCode.D))
A鍵操縱物件: if(Input.GetKey(KeyCode.A))

 void Update()
    {
        if(Input.GetKey(KeyCode.D)) {
            transform.Translate(speed*Time.deltaTime,0,0);
        }
        else if(Input.GetKey(KeyCode.A)) {
            transform.Translate(-speed*Time.deltaTime,0,0);
        }
    }

剛體物件、碰撞判斷 (Rigidbody、Collider)

  1. 想要讓物件像實體一樣往下掉:在player物件上新增一個component:Rigidbody
  • Rigidbody是什麼意思?
    中文叫做【剛體】,就是會將物件變成像是現實生活中的東西,會有質量、受阻力、受摩擦力、受引力影響,而且這些數值都可以做調整。
  • 如何讓物件變成剛體? 點Player物件→點右下Add Component→輸入Rigidbody 2D(由於這次是做2D遊戲)

https://ithelp.ithome.com.tw/upload/images/20220916/20152411HnC8wrVBXM.jpg

https://ithelp.ithome.com.tw/upload/images/20220916/20152411vLGzNp0V1x.jpg

https://ithelp.ithome.com.tw/upload/images/20220916/20152411aM0FI8rCJL.jpg
2. 想要讓物件能站在另一個物件上面:新增另外一個功能叫做Collider

  • Collider是什麼意思?
    白話就是告訴Unity每一個物件,它的碰撞範圍在哪裡。

  • 如何使用Collider? 點Player物件→點右下Add Component→輸入Collider→根據需求來選擇哪一種Collider(那由於我們目前要偵測的碰撞範圍都是方形的範圍,於是選擇 Box Collider 2D)
    https://ithelp.ithome.com.tw/upload/images/20220916/20152411FfcBeasd2j.jpg

  • 新增Collider功能之後可以看到右側Box Collider 2D欄位有一個Edit Collider,點下去會發現物件上會有綠色的框框,而這就是它的碰撞範圍,這個範圍也可以自己做調整。
    https://ithelp.ithome.com.tw/upload/images/20220916/20152411R9XCkCIQ3h.jpg

  • 若要達到讓物件能站在另一個物件上面的效果,則其他物件也要新增Collider。

    若只新增正方形物件的Collider→由於其他物件還沒有新增Collider所以無法達到物件站在另一個物件上的效果。

    另外兩個長方形階梯有新增Collider之後,還可以再結合剛剛新增的程式碼(A、D鍵去操縱物 件,達成下樓梯的效果)


心得

今天有學到一點點像玩遊戲效果的下樓梯,因為參考的教學影片主要想建立一個像是〝小朋友下樓梯〞遊戲的感覺,所以接下來所設計遊戲的部分也會朝這方面來發展,有興趣的讀者也可以繼續看下去~

參考網址:https://www.youtube.com/watch?v=nPW6tKeapsM&ab_channel=GrandmaCan-%E6%88%91%E9%98%BF%E5%AC%A4%E9%83%BD%E6%9C%83


上一篇
【Day3】老菜雞初嘗遊戲程式設計之開始打code囉!Unity的Game視窗簡介&C#控制物件(移動)
下一篇
【Day5】老菜雞學下樓梯遊戲之判斷碰撞/經過物件&標籤Tag
系列文
老菜雞挑戰30天學爆Unity&C#會成功嗎?...30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言